Completed
Push — master ( b3de34...d68fb4 )
by Andres
40s
created

upgrades.js ➔ ... ➔ ???   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
c 0
b 0
f 0
nc 1
dl 0
loc 1
rs 10
nop 2
1
/**
2
 upgrades
3
 Component that handles upgrades.
4
5
 @namespace Components
6
 */
7
'use strict';
8
9
angular.module('game').component('upgrades', {
10
  templateUrl: 'views/upgrades.html',
11
  controller: ['state', 'visibility', 'upgrade', 'data', upgrades],
12
  controllerAs: 'ct'
13
});
14
15
function upgrades(state, visibility, upgrade, data) {
16
  let ct = this;
17
  ct.state = state;
18
  ct.data = data;
19
  let sortFunc = upgrade.sortFunctions(data.upgrades);
20
21
  // tries to buy all the upgrades it can, starting from the cheapest
22
  ct.buyAll = function (slot) {
23
    let currency = data.elements[slot.element].main;
24
    let cheapest;
25
    let cheapestPrice;
26
    do{
27
      cheapest = null;
28
      cheapestPrice = Infinity;
0 ignored issues
show
Comprehensibility Best Practice introduced by
You seem to be aliasing the built-in name Infinity as cheapestPrice. This makes your code very difficult to follow, consider using the built-in name directly.
Loading history...
29
      for(let up of ct.visibleUpgrades(slot, data.upgrades)){
30
        let price = data.upgrades[up].price;
31
        if(!slot.upgrades[up] &&
32
          price <= state.player.resources[currency].number){
33
          if(price < cheapestPrice){
34
            cheapest = up;
35
            cheapestPrice = price;
36
          }
37
        }
38
      }
39
      if(cheapest){
40
        upgrade.buyUpgrade(state.player,
41
          slot.upgrades,
42
          data.upgrades[cheapest],
43
          cheapest,
44
          cheapestPrice,
45
          currency);
46
      }
47
    }while(cheapest);
48
  };
49
50
  ct.buyUpgrade = function (name, slot) {
51
    let price = data.upgrades[name].price;
52
    let currency = data.elements[slot.element].main;
53
    upgrade.buyUpgrade(state.player,
54
      slot.upgrades,
55
      data.upgrades[name],
56
      name,
57
      price,
58
      currency);
59
  };
60
61
  ct.visibleUpgrades = function(slot) {
62
    return visibility.visible(data.upgrades, isBasicUpgradeVisible, slot, sortFunc[state.player.options.sortIndex]);
63
  };
64
65
  function isBasicUpgradeVisible(name, slot) {
66
    let isVisible = visibility.isUpgradeVisible(name, slot, data.upgrades[name]);
67
    return isVisible && (!state.player.options.hideBought || !slot.upgrades[name]);
68
  }
69
}
70